package com.newmainsoftech.dao.entity.relation;

import java.lang.reflect.Method;


public interface BiLinkNavigableSetProxy<R extends HolderSide<E>, E extends HoldeeSide<R>> 
extends BiLinkSortedSetProxy<R, E> {
	/**
	 * To handle invocation of <code>descendingSet()</code> method of 
	 * <code>NavigableSet</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @return
	 */
	Object interDescendingSet( Object proxy, Method method);
	/**
	 * To handle invocation of <code>headSet(E toElement, boolean inclusive)</code> method of 
	 * <code>NavigableSet</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @param holdee
	 * @param inclusive
	 * @return
	 */
	Object interHeadSet( Object proxy, Method method, E holdee, boolean inclusive);
	/**
	 * To handle invocation of <code>tailSet(E toElement, boolean inclusive)</code> method of 
	 * <code>NavigableSet</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @param holdee
	 * @param inclusive
	 * @return
	 */
	Object interTailSet( Object proxy, Method method, E holdee, boolean inclusive);
	/**
	 * To handle invocation of <code>subSet(E fromElement, E toElement)</code> method of 
	 * <code>NavigableSet</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @param holdee
	 * @return
	 */
	Object interSubSet( Object proxy, Method method, E holdee, E toHoldee);
	/**
	 * To handle invocation of <code>subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)</code> 
	 * method of <code>NavigableSet</code> interface.<br /> 
	 * 
	 * @param proxy
	 * @param method
	 * @param fromHoldee
	 * @param fromInclusive
	 * @param toHoldee
	 * @param toInclusive
	 * @return
	 */
	Object interSubSet( 
			Object proxy, Method method, 
			E fromHoldee, boolean fromInclusive, 
			E toHoldee, boolean toInclusive);
}
